package com.bjbys.flush;

import static org.junit.Assert.assertEquals;

import org.junit.After;
import org.junit.Before;

import com.thoughtworks.selenium.DefaultSelenium;
import com.thoughtworks.selenium.Selenium;

@SuppressWarnings("deprecation")
public class BjbysFlush {
	
	private Selenium selenium;
	//判断是否存在【发布职位】按钮，默认为true
	private boolean hasPubBtn = true ;
	//判断是否存在【停止招聘】按钮，默认为true
	private boolean hasStopBtn = true ;
	//总分页数，默认为10页
//	private int pageCount = 10 ;
	
	@Before
	public void setUp() throws Exception {
		selenium = new DefaultSelenium("localhost", 4444, "*firefox", "http://www.bjbys.net.cn/zp/index.shtml");
		selenium.start();
	}

	/**
	* @Name: jumpFlushPage
	* @Description: 跳转到待刷新的页面，目的：首次登录系统，保存用户session信息
	* @Author: 李超	lc_jack@foxmail.com
	* @Version: V1.0
	* @CreateDate: 2017-1-11 上午10:55:56
	* @Parameters: @throws Exception
	* @Return: void
	 */
	public void jumpFlushPage() throws Exception {
		selenium.open("/zp/index.shtml");
		assertEquals("招聘 - 北京高校毕业生就业信息网", selenium.getTitle());
		selenium.click("document.login.Occupation[1]");
		selenium.click("id=username");
		selenium.type("id=username", "tong.li_hr@yunweiplus.com");
		selenium.click("id=password");
		selenium.type("id=password", "tong3.14159");
		selenium.click("id=loginBt");
		selenium.waitForPageToLoad("30000");
		assertEquals("首页 - 全国大学生就业一站式管理服务系统", selenium.getTitle());
		selenium.click("link=管理招聘职位");
		selenium.waitForPageToLoad("30000");
		assertEquals("招聘职位 - 全国大学生就业一站式管理服务系统", selenium.getTitle());
	}
	
	/**
	* @Name: queryAllRecord
	* @Description: 查询所有记录，跳转到第一页，解决转换【停止招聘】状态到【发布职位】状态出现的记录消失问题
	* @Author: 李超	lc_jack@foxmail.com
	* @Version: V1.0
	* @CreateDate: 2017-1-11 下午3:11:55
	* @Parameters: 
	* @Return: void
	 */
	public void queryAllRecord() {
		selenium.open("http://job.bjbys.net.cn/rec/job/index");
		selenium.click("css=input.btn-search");
		selenium.waitForPageToLoad("30000");
	}
	
	/**
	* @Name: flushCurrentPage
	* @Description: 跳转到指定页面，并改变第一个招聘按钮的状态：停止招聘->发布职位
	* @Author: 李超	lc_jack@foxmail.com
	* @Version: V1.0
	* @CreateDate: 2017-1-11 上午11:09:03
	* @Parameters: @param pageNum 页码
	* @Return: void
	 */
	public void flushStop2Release(int pageNum) {
		selenium.open("http://job.bjbys.net.cn/rec/job/index?pageNum=" + pageNum);
		assertEquals("招聘职位 - 全国大学生就业一站式管理服务系统", selenium.getTitle());
		//判断是否存在【停止招聘】按钮，如果存在，则更新为【发布职位】状态
		hasStopBtn = selenium.isElementPresent("css=span.btnstop") ;
		if(hasStopBtn) {
			selenium.click("css=span.btnstop");
			assertEquals("您确定暂停该职位信息的发布状态吗？", selenium.getConfirmation());
			assertEquals("招聘职位 - 全国大学生就业一站式管理服务系统", selenium.getTitle());
		}
	}
	
	/**
	* @Name: flushRelease2Stop
	* @Description:  跳转到指定页面，并改变第一个招聘按钮的状态：发布职位->停止招聘
	* @Author: 李超	lc_jack@foxmail.com
	* @Version: V1.0
	* @CreateDate: 2017-1-11 上午11:57:09
	* @Parameters: @param pageNum 页码
	* @Return: void
	 */
	public void flushRelease2Stop(int pageNum) {
		selenium.open("http://job.bjbys.net.cn/rec/job/index.action?pageNum=" + pageNum);
		assertEquals("招聘职位 - 全国大学生就业一站式管理服务系统", selenium.getTitle());
		//判断是否存在【发布职位】按钮，如果存在，则更新为【停止招聘】状态
		hasPubBtn = selenium.isElementPresent("css=span.btnpub") ;
		if(hasPubBtn) {
			//2017-01-13 修改	获取职位信息编码，拼接站点组字符串，选择对应的站点组		begin
			//获取当前记录的编码，来选择对应的发布站点组
			String codeText = selenium.getText("//span[@class='btnpub']/parent::a/parent::div/parent::td/parent::tr/td[3]") ;
			//拼接发布站点组字符串
			String stationGroup = getStationGroupByCode(codeText) ;
			//end 
			selenium.click("css=span.btnpub");
			//2017-01-13 修改 根据拼接得到的站点组名称，选择发布的站点组	begin
			//selenium.select("id=groupId", "label=2北京");
			selenium.select("id=groupId", "label=" + stationGroup);
			//end
			selenium.click("//input[@value='确定发布']");
			selenium.waitForPageToLoad("30000");
			assertEquals("招聘职位 - 全国大学生就业一站式管理服务系统", selenium.getTitle());
		}
	}
	
	/**
	* @Name: getStationGroupByCode
	* @Description: 根据职位信息编码获取发布职位信息对应的站点组
	* @Author: 李超	lc_jack@foxmail.com
	* @Version: V1.0
	* @CreateDate: 2017-1-13 下午3:29:49
	* @Parameters: @param codeText
	* @Parameters: @return
	* @Return: String
	 */
	private String getStationGroupByCode(String codeText) {
		//获取编码的第2、3位
		String allSub = codeText.substring(1, 3) ;
		//获取截取结果的首字符
		int first = Integer.valueOf(allSub.substring(0, 1)) ;
		//resultCode：如果codeText的第二位为0，取第三位作为截取结果字符串；如果codeText的第二位为1，去第二、三位作为截取结果字符串
		int resultCode = 0 ;
		switch (first) { 
		case 0:
			resultCode = Integer.valueOf(allSub.substring(1, 2)) ;
			break;
		case 1:
			resultCode = Integer.valueOf(allSub) ;
			break;
		}
		//将截取结果字符串与对应的站点名称拼接成所需要的站点组字符串
		String result = null ;
		switch (resultCode) {
		case 1:
			result = resultCode + "教育部" ;
			break;
		case 2:
			result = resultCode + "北京" ;
			break;
		case 3:
			result = resultCode + "河北" ;
			break;
		case 4:
			result = resultCode + "河北" ;
			break;		
		case 5:
			result = resultCode + "河南" ;
			break;
		case 6:
			result = resultCode + "河南" ;
			break;
		case 7:
			result = resultCode + "山西" ;
			break;
		case 8:
			result = resultCode + "山西" ;
			break;
		case 9:
			result = resultCode + "山东" ;
			break;		
		case 10:
			result = resultCode + "山东" ;
			break;	
		case 11:
			result = resultCode + "山东" ;
			break;
		case 12:
			result = resultCode + "辽宁" ;
			break;
		case 13:
			result = resultCode + "辽宁" ;
			break;
		case 14:
			result = resultCode + "内蒙" ;
			break;		
		case 15:
			result = resultCode + "天津" ;
			break;	
		case 16:
			result = resultCode + "吉林" ;
			break;
		case 17:
			result = resultCode + "黑龙江" ;
			break;
		case 18:
			result = resultCode + "黑龙江" ;
			break;
		case 19:
			result = resultCode + "四川" ;
			break;		
		case 20:
			result = resultCode + "重庆" ;
			break;		
		case 21:
			result = resultCode + "安徽" ;
			break;		
		case 22:
			result = resultCode + "甘肃" ;
			break;		
		case 23:
			result = resultCode + "新疆" ;
			break;
		case 24:
			result = resultCode + "云南" ;
			break;
		case 25:
			result = resultCode + "广西" ;
			break;		
		case 26:
			result = resultCode + "江西" ;
			break;	
		case 27:
			result = resultCode + "广东" ;
			break;
		case 28:
			result = resultCode + "广州" ;
			break;
		case 29:
			result = resultCode + "陕西" ;
			break;
		case 30:
			result = resultCode + "福建" ;
			break;		
		case 31:
			result = resultCode + "浙江" ;
			break;		
		case 32:
			result = resultCode + "南昌分部" ;
			break;	
		case 33:
			result = resultCode + "河北分部" ;
			break;				
		default:
			result = "当前站点" ;
			break;
		}
		return result;
	}
	
	/**
	* @Name: updateAllRelease2Stop
	* @Description: 将页面中所有【发布职位】状态转换为【停止招聘】
	* @Author: 李超	lc_jack@foxmail.com
	* @Version: V1.0
	* @CreateDate: 2017-1-11 下午12:39:40
	* @Parameters: @param pageCount 总分页数
	* @Return: void
	 */
	public void updateAllRelease2Stop(int pageCount) throws Exception {
		while(hasPubBtn) {
			for (int i = 1; i <= pageCount; i++) {
				hasPubBtn = true ;
				while(hasPubBtn) {
					flushRelease2Stop(i) ;
				}
			}
		}
	}
	
	/**
	* @Name: updateAllStop2Release
	* @Description: 将页面中所有【停止招聘】状态转换为【发布职位】
	* @Author: 李超	lc_jack@foxmail.com
	* @Version: V1.0
	* @CreateDate: 2017-1-11 下午2:46:25
	* @Parameters: @param pageCount 总分页数
	* @Return: void
	 */
	public void updateAllStop2Release(int pageCount) throws Exception {
		while(hasStopBtn) {
			for (int i = 1; i <= pageCount; i++) {
				hasStopBtn = true ;
				while(hasStopBtn) {
					flushStop2Release(i) ;
				}
				//查询所有记录，解决转换【停止招聘】状态到【发布职位】状态后出现的记录消失问题
				queryAllRecord() ;
			}
		}
	}
	
	@After
	public void tearDown() throws Exception {
		selenium.stop();
	}

}
